/**
 * 计算相关函数
 * @exports CFMath
 * @constructor CFMath
 * @description 调用方法：$cf.CFMath.函数名称
 */

class CFMath {
  constructor() {}
  /**
   * 进制转换
   * @param {number} num 待转换整数
   * @param {*} radix1 原始进制
   * @param {*} radix2 转换后进制
   * @returns {number} 转换结果
   * @example
   * $cf.CFMath.translateRadix(100, 2); // 4，二进制100转为十进制
   * $cf.CFMath.translateRadix(100, 16, 8); // 400，十六进制100转为八进制
   */
  translateRadix(num, radix1 = 10, radix2) {
    if (!radix2) {
      // radix1进制转10进制
      return parseInt(num, radix1);
    }
    // radix1进制转radix2进制
    return +parseInt(num, radix1).toString(radix2);
  }
  /**
   * 获取范围内的一个随机整数
   * @param {Number} min 范围最小值
   * @param {Number} max 范围最大值
   * @returns {Number} 范围内的一个随机数
   * @example
   * $cf.CFMath.rangeRandom(1, 5); // 1 ~ 5
   */
  rangeRandom(min, max) {
    let range = max - min + 1;
    return Math.floor(Math.random() * range + min);
  }
  /**
   * 比较数字是否相等
   * @param {Number} val1 数字1
   * @param {Number} val2 数字2
   * @returns {Boolean} 是否相等
   * @example
   * $cf.CFMath.isEqual(0.1 + 0.2, 0.3); // true
   */
  isEqual(val1, val2) {
    return Math.abs(val1 - val2) < Number.EPSILON;
  }
}

export default CFMath;
